import axios, { AxiosHeaders } from 'axios'
// 把 vant 的 Dialog 组件拿过来
import { Dialog } from 'vant'
import type {AxiosRequestConfig} from 'axios'

// 创建 axios 实例
const instance = axios.create({
  baseURL: 'http://121.89.205.189:3000/api',
  timeout: 10000
})

// 配置请求拦截器
instance.interceptors.request.use((config:AxiosRequestConfig) => {

  //判断用户信息
  if(config.url == '/user/info'){
    (config.headers as AxiosRequestConfig<AxiosHeaders>).token = window.localStorage.getItem('token')
  }
  //判断购物车相关
  //所有购物车相关的都是/cart/xxx
  //只要判断是以/catr 开头的就行
  if(/^\/cart/.test(config.url)){
    //拿到token进行添加
    (config.headers as AxiosRequestConfig<AxiosHeaders>).token = window.localStorage.getItem('token')
  }
  // 判断订单相关
  if(config.url === '/user/orderlist'){
    (config.headers as AxiosRequestConfig<AxiosHeaders>).token = window.localStorage.getItem('token')
  }
  return config
})

// 配置响应拦截器
instance.interceptors.response.use(
  response => {
    //判断返回的内容的code是 10119
    //那么久表示无效token
    if(response.data.code === '10119') {
      Dialog({
        title:'提示',
        message:'登录状态异常'
      })
      return{code:0}
    }
    return response.data
  },
  err => {
    // Dialog.alert({ title: '网络错误', message: '网络不给力, 稍后再来' })
  }
)

// 导出实例
export default instance
